Développez en Ajax by PLASSE (Michel)
Auteur:PLASSE (Michel) [PLASSE (Michel)]
La langue: fra
Format: epub
Tags: Informatique
Éditeur: O'Reilly
Publié: 2006-08-28T08:14:05+00:00
/** Vérifier que les paramètres sont valides */
check: function(idField) {
// Verifier qu'il y a bien une saisie a suggerer
if (this.source == null) {
Log.error("Element with id '" + idField + "' not found");
}
if (isNaN(parseInt(this.maxSuggestNumber)) ||
parseInt(this.maxSuggestNumber) <= 0) {
Log.error("Max suggest number for '" + idField +
"' not positive (" + this.maxSuggestNumber + ")");
}
},
/** Récuperer les options et les faire afficher
* (méthode abstraite) */
setOptions: function() {
Log.error("setOptions is abstract, must be implemented");
},
/** Les méthodes suivantes restent inchangées */
setBehaviour: function() { ... },
onkeydown: function(aEvent) { ... },
onkeyup: function(aEvent) { ... },
goAndGet: function(index) { ... }
Communication avec le serveur via XMLHttpRequest
159
CHAPITRE 4
}
Suggest.prototype.constructor = Suggest;
En , nous supprimons les paramètres du constructeur, car ce type d’objet sert de type
de base à d’autres, sans pouvoir être instancié. Nous déplaçons les initialisations qu’avait
le constructeur ancien vers la méthode init, définie en , à l’exception de celle concer-
nant la fonction récupérant les suggestions, qui est déplacée dans le type descendant
LocalSuggest.
De même, en , la méthode check ne vérifie plus que la fonction récupérant les valeurs
est bien une fonction. Enfin, en , nous prenons la précaution de générer une erreur si
nous ne redéfinissons pas setOptions. Les autres méthodes restent inchangées.
Le code de LocalSuggest est alors succinct. Le voici, épuré de ses commentaires jsdoc :
function LocalSuggest(idField, getValuesFunction, maxSuggestNumber) {
this.getValues = getValuesFunction;
Suggest.prototype.init.call(this, idField, maxSuggestNumber);
}
LocalSuggest.prototype = new Suggest();
LocalSuggest.prototype.setOptions = function() {
var values = this.getValues(this.source.value,
this.maxSuggestNumber);
this.popup.setOptions(values);
}
LocalSuggest.prototype.check = function(idField) {
// Appeler check du parent
Suggest.prototype.check.call(this, idField);
// Code propre a l'objet
if (typeof(this.getValues) != "function") {
Log.error("Suggestion function for '" +
idField + "' not found");
}
}
LocalSuggest.prototype.constructor = LocalSuggest;
Le constructeur mémorise la fonction récupérant les suggestions et appelle, en , la
méthode init du type parent Suggest. L’héritage de Suggest est spécifié en ligne . En ,
nous implémentons setOptions en reprenant simplement le code initial, avant le décou-
page en deux composants. La méthode check fait appel, en , à celle du type parent et
ajoute sa propre vérification.
Rien de nouveau jusque-là, puisque nous avons simplement réorganisé notre code.
Développez en Ajax
160
Suggestion de saisie en Ajax
Venons-en au composant en Ajax. Voici son constructeur :
function HttpSuggest(idField, getValuesUrl, maxSuggestNumber) {
/** L'url récuperant les valeurs @type String*/
this.url = getValuesUrl;
// Preparer l'url pour recevoir les parametres
if (this.url.indexOf("?") == -1) {
this.url += "?";
}
else {
this.url += "&";
}
/** Requete HTTP @type XMLHttpRequest */
this.request = new XMLHttpRequest();
Suggest.prototype.init.call(this, idField, maxSuggestNumber);
}
HttpSuggest.prototype = new Suggest();
Comme indiqué précédemment, il est hautement préférable de n’avoir à tout moment
qu’une requête de suggestion en cours. Nous la mémorisons ici dans l’attribut request,
ajoutons l’URL de l’appel Ajax et appelons l’initialisation du type parent. Enfin, nous
faisons, en , du type HttpSuggest un héritier du type Suggest.
Nous transformons légèrement l’URL pour tenir compte des différentes formes qu’elle
peut avoir : si elle n’a pas de paramètre, nous ajoutons le point d’interrogation qui en
marque le début ; si elle en a, nous ajoutons l’esperluette (&) qui les continue. Nous
pourrons de la sorte ajouter les paramètres liés à la saisie de la même façon.
C’est précisément la première tâche de la méthode setOptions, qui représente le seul
changement dans HttpSuggest, hormis le constructeur :
HttpSuggest.prototype.setOptions = function() {
try {
// Annuler la requete precedente qui ne sert plus a rien
this.request.abort();
}
catch (exc) {}
try {
var url = this.
Télécharger
Ce site ne stocke aucun fichier sur son serveur. Nous ne faisons qu'indexer et lier au contenu fourni par d'autres sites. Veuillez contacter les fournisseurs de contenu pour supprimer le contenu des droits d'auteur, le cas échéant, et nous envoyer un courrier électronique. Nous supprimerons immédiatement les liens ou contenus pertinents.
Un(e)secte by Chattam Maxime(3904)
Les Dames Du Lac by Marion Zimmer Bradley(3794)
Le fléau by Stephen King(2571)
La panthère des neiges by Tesson Sylvain(2327)
L'érotisme au Moyen-Age : Le corps, le désir, l'amour by Croix Arnaud de la(2146)
A la recherche de l'amour by Inconnu(e)(2111)
Les Croix De Bois by Dorgelès Roland(1995)
Conan by Howard Robert(1982)
La Tempête des échos by Christelle Dabos(1982)
Les Furtifs by Damasio Alain(1897)
Les croix de bois by Dorgelès Roland(1852)
Arnaud Desjardins - A la recherche du Soi - II. Au-delà du moi by Arnaud Desjardins(1822)
Le Kama Sutra by Vatsyayana(1804)
La croix de Triquet by John MacFarlane(1774)
Le Livre des Règles by Unknown(1763)
Le zoo humain by Desmond Morris(1760)
Ad Vitam Aeternam by Alex Kanse(1719)
Grisha, Tome 02 by Leigh Bardugo(1715)
Espace vital by Isaac Asimov - Nouvelles - 3(1710)